package com.bestcem.xm.member.service.dto;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author ming.xue <ming.xue@idiaoyan.com>
 * @desc 联系人
 * @date 2021-07-21
 */
@Getter
@Setter
@ToString
@NoArgsConstructor
public class MemberDTO extends BaseDTO {

    private String orgId;

    /**
     * 系统编号（源自用户管理系统）
     */
    private String sysId;

    /**
     * 来源
     */
    private String source;

    /**
     * 微信头像url
     */
    private String avatar;

    /**
     * 姓名
     */
    private String name;

    /**
     * 昵称
     */
    private String nickname;

    /**
     * 前端展示名
     */
    @JsonProperty("row_name")
    private String rowName;

    /**
     * 性别
     */
    private String gender;

    /**
     * [省份, 城市, 区县, 街道信息]
     */
    private List<String> address;

    /**
     * 手机号
     */
    private String mobile;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 出生日期
     */
    private Date birthday;

    /**
     * 年龄
     */
    private Integer age;

    /**
     * 区域信息(省份、城市、区，源于第三方系统)，所属地区
     */
    private String region;

    /**
     * 所属组织
     */
    private String store;

    private String storeName;

    /**
     * 用户状态
     */
    private Integer status;

    /**
     * 备注
     */
    private String content;

    /**
     * 员工编号
     */
    private String employeeId;

    /**
     * 雇佣状态
     */
    private Integer employeeStatus;

    /**
     * 所属部门，机构联系人有此字段
     */
    private String department;

    /**
     * 职位，机构联系人有此字段
     */
    private String position;

    /**
     * 机构编号，即机构联系人中的客户编号
     */
    private String instituteId;

    /**
     * 机构名称，机构联系人有此字段
     */
    private String instituteName;

    /**
     * 用户标识，内部联系人需要的字段
     */
    private String userId;

    /**
     * 联系人编号
     */
    @JsonProperty("member_no")
    @JSONField(name="member_no")
    private String memberNo;

    /**
     * 联系人类型
     */
    @JsonProperty("member_type")
    @JSONField(name="member_type")
    private Integer memberType;

    /**
     * 微信OpenID
     */
    @JsonProperty("openid")
    @JSONField(name="openid")
    private String openId;

    /**
     * 微信AppID
     */
    @JsonProperty("appid")
    @JSONField(name="appid")
    private String appId;

    /**
     * 微信unionId
     */
    private String unionId;

    /**
     * 支付宝ID
     */
    @JsonProperty("alipay_user_id")
    @JSONField(name="alipay_user_id")
    private String alipayUserId;

    /**
     * 答题率
     */
    @JsonProperty("answer_rate")
    @JSONField(name="answer_rate")
    private Float answerRate = 0f;

    /**
     * 答题完成率
     */
    @JsonProperty("submit_rate")
    @JSONField(name="submit_rate")
    private Float submitRate = 0f;

    /**
     * 收到问卷数
     */
    @JsonProperty("receive_total_count")
    @JSONField(name="receive_total_count")
    private Integer receiveTotalCount = 0;

    /**
     * 开始答题问卷数
     */
    @JsonProperty("start_answer_count")
    @JSONField(name="start_answer_count")
    private Integer startAnswerCount = 0;

    /**
     * 标签值
     */
    @JsonProperty("labels")
    @JSONField(name="labels")
    private List<LabelValueIdDTO> labelValueIds;

    /**
     * 扩展字段列表
     */
    @JsonProperty("field_val_list")
    @JSONField(name="field_val_list")
    private List<ExtendFieldDTO> fieldValList;

    private List<Map<String, JSONObject>> fields;

    @JsonProperty("ancestors")
    private List<GroupDTO> ancestors;

    /**
     * 外部编号
     */
    @JsonProperty("out_no")
    private String outNo;
}
